/**
 * 给定一个整数数组prices，其中第  prices[i] 表示第 i 天的股票价格 。​
 *
 * 设计一个算法计算出最大利润。在满足以下约束条件下，你可以尽可能地完成更多的交易（多次买卖一支股票）:
 *
 * 卖出股票后，你无法在第二天买入股票 (即冷冻期为 1 天)。
 * 注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
 */
public class Test309 {
    public static void main(String[] args) {
        int[] prices = {1,2,3,0,2};
        System.out.println(maxProfit(prices));
    }
    public static int maxProfit(int[] prices) {
        if( prices.length == 1) return 0;
        int f1 = -prices[0];// 手里有股票
        int f2 = 0;// 冷冻期,手里无股票
        int f3 = 0;// 非冷冻期 && 手里没有股票
        for(int i = 1;i < prices.length;i++){
            int temp1 = f1;
            int temp2 = f2;
            int temp3 = f3;
            f1 = Math.max(temp3-prices[i],temp1);
            f2 = temp1+prices[i];
            f3 = Math.max(temp2,temp3);
        }
        return Math.max(f2,f3);
    }
}
